﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "GcmpDevService.h"

namespace gcmp
{
    class IConfigRecord;
    /// \brief  快捷键配置
    class GCMP_DEV_SERVICE_EXPORT IHotKeyConfig
    {
    public:

        /// \brief 获取快捷键管理器
        /// \return 快捷键管理器指针
        static IHotKeyConfig* Get();

        /// \brief 获取快捷键配置记录
        /// \return 返回快捷键记录类型名的集合
        virtual const std::vector<const IConfigRecord*> GetConfigRecords() const = 0;

        /// \brief 重新加载快捷键配置
        /// \return true成功 false 失败
        virtual bool LoadHotKeyConfig() = 0;

        /// \brief 获取快捷键配置文件的路径（绝对路径）
        ///
        /// \return 快捷键配置文件的路径（绝对路径）
        virtual const std::wstring GetHotKeyConfigFilePath() const = 0;

        /// \brief 设置快捷键配置文件的路径
        ///
        /// 快捷键配置文件路径是带有文件名的相对于可执行程序exe的路径,如果程序需要用到快捷键，则必须在程序初始化前调用此函数设置快捷键配置文件的位置
        /// \param hotKeyConfigFilePath 快捷键配置文件路径，带有文件名的相对于可执行程序exe的路径
        /// \return true-设置成功；false-设置失败
        virtual bool SetHotKeyConfigFilePath(const std::wstring& hotKeyConfigFilePath) = 0;

        /// \brief 析构函数
        virtual ~IHotKeyConfig() {};

    };
}
